package edu.xmut.kakamusic.bean.vo;

import java.util.List;

import lombok.Data;
import lombok.NoArgsConstructor;

@NoArgsConstructor
@Data
public class RecommendVideoVO {

    public Long type;
    public Boolean displayed;
    public String alg;
    public Object extAlg;
    public Data data;

    @NoArgsConstructor
    @lombok.Data
    public static class Data {
        public String alg;
        public String scm;
        public String threadId;
        public String coverUrl;
        public Long height;
        public Long width;
        public String title;
        public String description;
        public Long commentCount;
        public Long shareCount;
        public List<Resolutions> resolutions;
        public Creator creator;
        public UrlInfo urlInfo;
        public List<VideoGroup> videoGroup;
        public Object previewUrl;
        public Long previewDurationms;
        public Boolean hasRelatedGameAd;
        public Object markTypes;
        public List<RelateSong> relateSong;
        public Object relatedInfo;
        public Object videoUserLiveInfo;
        public String vid;
        public Long durationms;
        public Long playTime;
        public Long praisedCount;
        public Boolean praised;
        public Boolean subscribed;

        @NoArgsConstructor
        @lombok.Data
        public static class Creator {
            public Boolean defaultAvatar;
            public Long province;
            public Long authStatus;
            public Boolean followed;
            public String avatarUrl;
            public Long accountStatus;
            public Long gender;
            public Long city;
            public Long birthday;
            public Long userId;
            public Long userType;
            public String nickname;
            public String signature;
            public String description;
            public String detailDescription;
            public Long avatarImgId;
            public Long backgroundImgId;
            public String backgroundUrl;
            public Long authority;
            public Boolean mutual;
            public Object expertTags;
            public Experts experts;
            public Long djStatus;
            public Long vipType;
            public Object remarkName;
            public String backgroundImgIdStr;
            public String avatarImgIdStr;

            @NoArgsConstructor
            @lombok.Data
            public static class Experts {
                public String $1;
            }
        }

        @NoArgsConstructor
        @lombok.Data
        public static class UrlInfo {
            public String id;
            public String url;
            public Long size;
            public Long validityTime;
            public Boolean needPay;
            public Object payInfo;
            public Long r;
        }

        @NoArgsConstructor
        @lombok.Data
        public static class Resolutions {
            public Long resolution;
            public Long size;
        }

        @NoArgsConstructor
        @lombok.Data
        public static class VideoGroup {
            public Long id;
            public String name;
            public Object alg;
        }

        @NoArgsConstructor
        @lombok.Data
        public static class RelateSong {
            public String name;
            public Long id;
            public Long pst;
            public Long t;
            public List<Ar> ar;
            public List<?> alia;
            public Long pop;
            public Long st;
            public String rt;
            public Long fee;
            public Long v;
            public Object crbt;
            public String cf;
            public Al al;
            public Long dt;
            public H h;
            public M m;
            public L l;
            public Object a;
            public String cd;
            public Long no;
            public Object rtUrl;
            public Long ftype;
            public List<?> rtUrls;
            public Long djId;
            public Long copyright;
            public Long sId;
            public Long rtype;
            public Object rurl;
            public Long mst;
            public Long cp;
            public Long mv;
            public Long publishTime;
            public Privilege privilege;

            @NoArgsConstructor
            @lombok.Data
            public static class Al {
                public Long id;
                public String name;
                public String picUrl;
                public List<?> tns;
                public String picStr;
                public Long pic;
            }

            @NoArgsConstructor
            @lombok.Data
            public static class H {
                public Long br;
                public Long fid;
                public Long size;
                public Long vd;
            }

            @NoArgsConstructor
            @lombok.Data
            public static class M {
                public Long br;
                public Long fid;
                public Long size;
                public Long vd;
            }

            @NoArgsConstructor
            @lombok.Data
            public static class L {
                public Long br;
                public Long fid;
                public Long size;
                public Long vd;
            }

            @NoArgsConstructor
            @lombok.Data
            public static class Privilege {
                public Long id;
                public Long fee;
                public Long payed;
                public Long st;
                public Long pl;
                public Long dl;
                public Long sp;
                public Long cp;
                public Long subp;
                public Boolean cs;
                public Long maxbr;
                public Long fl;
                public Boolean toast;
                public Long flag;
                public Boolean preSell;
            }

            @NoArgsConstructor
            @lombok.Data
            public static class Ar {
                public Long id;
                public String name;
                public List<?> tns;
                public List<?> alias;
            }
        }
    }
}
